/**
 * SIP Server interface.
 * @author qwz
 * @version 1.0
 * @updated 2022-7-30
 */
namespace go sipsrv

/*用户信息*/
struct Info {
    1: string Id
    2: string Ip
    3: string Port
    4: string AreaCode
}

/*通用回复*/
struct SimpleResponse {
    1: i32 status
    2: string msg
    3: string date
}

/*设备台账信息*/
struct DeviceInfo {
    1: Device Device
    2: Extend Extend
}

/*设备信息*/
struct Device {
  1:  string  DeviceID      //设备ID
  2:  string  DeviceName    //设备名称
  3:  string  DeviceVendor  //设备厂家
  4:  string  DeviceModel   //型号
  5:  string  DeviceVersion //系统版本
  6:  string  Department    //部门
  7:  string  DeviceArea    //地市
  8:  string  DeviceRawId   //设备原始id
  9:  i32     ChannelCount  //信道数
  10: string  DirectConnType//接入方式
  11: string  FuDeviceSipID //国标ID
  12: string  AccessID      //链接中心ID
  13: string  DeviceIP      //设备地址
  14: i32     DevicePort    //设备端口
  15: i64     ConnectType   //连接类型
  16: string  ConnVersion   //接入中心版本
  17: string  UserName      //账号
  18: string  UserPassword  //密码
  19: string  RtspUrl       //Rtsp_Url
  20: i32     ProtoType     //协议类型
  21: string  SdkVersion    //平台版本
  22: string  ChannelID     //信道ID
  23: i32     LinkMode      //链接型号
  24: i32     StreamType    //流类型
  25: i64     DeviceType    //设备类型
  26: string  SipArea       //国标域
  27: i8      Simulation    //模拟设备(是否为模拟国标的设备)
  28: i64     RegTimestamp  //注册时间
  29: string  ConnectSolutionID //连接解决方案ID
}

/*设备扩展信息*/
struct Extend {
  1:  string  DeviceSipId    //设备ID,内存表的key
  2:  string  Area           //地市
  3:  string  AccessId       //接入中心ID
  4:  i64     ConnectType    //接入方案
  5:  string  ConnVersion    //接入中心版本
  6:  i64     LastTimestamp  //最后上线时间
  7:  i64     UpdateTimestamp//最后更新时间
  8:  i64     SubscribeType  //订阅类型
  9:  i8      Status         //状态
  10: string  AccessIPPort   //設備所接入的接入中心的thrift鏈接
}


service SipService {

//设备管理中心
    /**
     * 服务注册
     */

    /*获取服务配置*/
    SimpleResponse GetServiceConfig(1: string srvId, 2: string srvType),
    /*向设备管理中心注册服务*/
    SimpleResponse RegisterService(1: string srvId, 2: string srvType, 3: string ip, 4: string port),


    /**
     * 设备注册
     */

    /*向设备管理中心获取设备台账信息  不一定需要*/
    list<DeviceInfo> GetDeviceList(1: string srvId, 2: string srvType),
    DeviceInfo GetDevice(1: string deviceId),

    /*向设备管理中心注册设备上线*/
    SimpleResponse RegisterDevice(1: string deviceId, 2: string srvType, 3: string ip, 4: string port),
    /*维护心跳在线状态，上报心跳*/
    SimpleResponse DeviceHeartBeat(1: string deviceId, 2: i64 timestamp),


//国标集联中心

    /*维护心跳在线状态*/
    SimpleResponse ServiceHeartBeat(1: string srvId, 2: i64 timestamp)

    /*新添加设备下发注册信息  不一定需要*/
    SimpleResponse NewDeviceRegister(1: DeviceInfo device),

    /**
     * 视频调阅
     */

    /*实时调阅*/
    SimpleResponse RealPlay(1: Info fromInfo, 2: Info toInfo, 3: Info msInfo),
    /*历史调阅*/
    SimpleResponse HistoryPlay(1: Info fromInfo, 2: Info toInfo, 3: Info msInfo, 4: i64 startTime),

    /**
     * 设备控制
     */

    /*设备云台镜头控制*/
    SimpleResponse PTZControl(1: Info fromInfo, 2: Info toInfo, 3: string cmd),
}